/*
 * @Author: JYJ 
 * @Date: 2020-07-11 22:10:44 
 * @Desc: 事件系统，应该对应的模块创建对应的事件系统，不要全部塞到一起
 */
namespace gf {
    export class GameEvent extends egret.EventDispatcher {
        public constructor(target: egret.IEventDispatcher = null) {
            super(target);
        }
        /**
         * @type 事件的类型
         * @listener 处理事件的监听器函数function(data),参数data不是分发时候传的参数，而是整个事件对象，data.type事件 data.data分发时候参数
         * @thisObject 侦听函数绑定的this对象
         */
        public addListener(type: string, listener: Function, thisObject: any): void {
            this.addEventListener(type, listener, thisObject);
        }
        public removeListener(type: string, listener: Function, thisObject: any): void {
            this.removeEventListener(type, listener, thisObject);
        }
        /**
         * 派发一个指定参数的事件
         * @type 事件类型
         * @data 事件
         */
        public dispatch(type: string, data?: any): void {
            // dispatchEventWith 可以派发事件并可在事件流中转递数据
            this.dispatchEventWith(type, false, data);
        }
    }
}